/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionmagasins_aspectj_junit_patterns.model;

import java.util.ArrayList;

//Classe singleton
public class CatalogueRoles 
{
    private static ArrayList<Role> roles;
    
    public static final Role ROLE_DIRECTEUR = new RoleDirecteur();
    public static final Role ROLE_SOUS_DIRECTEUR = new RoleSousDirecteur();
    public static final Role ROLE_VENDEUR = new RoleVendeur();
    public static final Role ROLE_AUCUN = new RoleAucun();
    
    private static class CatalogueHolder//Holder pour un singleton thread safe 
    {
        static final CatalogueRoles INSTANCE = new CatalogueRoles();
    }
    
    private CatalogueRoles()
    {
       roles = new ArrayList<>();
       
       roles.add(ROLE_DIRECTEUR);
       roles.add(ROLE_SOUS_DIRECTEUR);
       roles.add(ROLE_VENDEUR);
    }
    
    public static CatalogueRoles getInstance()
    {
        return CatalogueHolder.INSTANCE;
    }

    public ArrayList<Role> getRoles() 
    {
        return (ArrayList<Role>) roles.clone();//Clone pour eviter que des roles puissent être ajouté ailleurs dans le programme, on ne retourne donc pas la liste originale
    }    
}
